package own.stu.jobgib.playown.alg.leetcode.editor.cn;

//给定 s 和 t 两个字符串，当它们分别被输入到空白的文本编辑器后，如果两者相等，返回 true 。# 代表退格字符。 
//
// 注意：如果对空文本输入退格字符，文本继续为空。 
//
// 
//
// 示例 1： 
//
// 
//输入：s = "ab#c", t = "ad#c"
//输出：true
//解释：s 和 t 都会变成 "ac"。
// 
//
// 示例 2： 
//
// 
//输入：s = "ab##", t = "c#d#"
//输出：true
//解释：s 和 t 都会变成 ""。
// 
//
// 示例 3： 
//
// 
//输入：s = "a#c", t = "b"
//输出：false
//解释：s 会变成 "c"，但 t 仍然是 "b"。 
//
// 
//
// 提示： 
//
// 
// 1 <= s.length, t.length <= 200 
// s 和 t 只含有小写字母以及字符 '#' 
// 
//
// 
//
// 进阶： 
//
// 
// 你可以用 O(n) 的时间复杂度和 O(1) 的空间复杂度解决该问题吗？ 
// 
// Related Topics 栈 双指针 字符串 模拟 
// 👍 463 👎 0


public class BackspaceStringCompare {




    public static void main(String[] args) {
        System.out.println('a' + 0 );
        System.out.println(  'A' + 0);
        System.out.println(  ('A' | 0x20) + 0);


    }

    public static void mainv(String[] args) {
        Solution solution = new BackspaceStringCompare().new Solution();

//        System.out.println(solution.backspaceCompare("ab#c", "ad#c"));
//        System.out.println(solution.backspaceCompare("ab##", "c#d#"));
//        System.out.println(solution.backspaceCompare("a#c", "c"));
//        System.out.println(solution.backspaceCompare("a#c", "b"));
//        System.out.println(solution.backspaceCompare("a##c", "#a#c"));
//        System.out.println(solution.backspaceCompare("ab##", "c#d#"));
//        System.out.println(solution.backspaceCompare("xywrrmp", "xywrrmu#p"));
//        System.out.println(solution.backspaceCompare("bxj##tw", "bxo#j##tw"));


        int i = 0;
        for (; i < 10; ++i) {
            System.out.println("+ ===");
        }
        System.out.println(i);


    }

    //leetcode submit region begin(Prohibit modification and deletion)
    class Solution {
        public boolean backspaceCompare(String s, String t) {
            if (s == null || t == null) {
                return false;
            }

            char[] sc = s.toCharArray();
            char[] tc = t.toCharArray();

            int i = sc.length - 1, j = tc.length - 1;
            int skipS = 0, skipT = 0;
            while (i >= 0 || j >= 0) {
                while (i >= 0) {
                    if (sc[i] == '#') {
                        skipS++;
                        i--;
                    } else if (skipS > 0) {
                        skipS--;
                        i--;
                    } else break;
                }

                while (j >= 0) {
                    if (tc[j] == '#') {
                        skipT++;
                        j--;
                    } else if (skipT > 0) {
                        skipT--;
                        j--;
                    } else break;
                }

                if (i >= 0 && j >= 0) {
                    if (sc[i] != tc[j]) return false;
                } else {
                    if (i >= 0 || j >= 0) {
                        return false;
                    }
                }
                i--;
                j--;
            }

            return true;
        }

    }
}
//leetcode submit region end(Prohibit modification and deletion)

